
package ae.pcfc.etks.finance.types.v2;

import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementRef;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.bind.annotation.XmlType;
import javax.xml.datatype.XMLGregorianCalendar;


/**
 * 
 * 				Response Type for paymentAdvice
 * 			
 * 
 * <p>Java class for paymentAdviceResponseType complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType name="paymentAdviceResponseType">
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *         &lt;element name="client" type="{http://pcfc.ae/etks/finance/types/v2}clientType"/>
 *         &lt;element name="serviceList" type="{http://pcfc.ae/etks/finance/types/v2}servicePaymentResponseType" maxOccurs="unbounded"/>
 *         &lt;element name="paymentAdviceAmount" type="{http://www.w3.org/2001/XMLSchema}double"/>
 *         &lt;element name="remarks" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="expiryDate" type="{http://www.w3.org/2001/XMLSchema}dateTime" minOccurs="0"/>
 *         &lt;element name="paymentAdviceStatus" type="{http://www.w3.org/2001/XMLSchema}string"/>
 *         &lt;element name="isSettled" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
 *       &lt;/sequence>
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "paymentAdviceResponseType", propOrder = {
    "client",
    "serviceList",
    "paymentAdviceAmount",
    "remarks",
    "expiryDate",
    "paymentAdviceStatus",
    "isSettled"
})
@XmlSeeAlso({
    QueryPaymentAdviceResponse.class,
    PreviewPaymentAdviceResponse.class,
    GeneratePaymentAdviceResponse.class
})
public class PaymentAdviceResponseType {

    @XmlElement(required = true)
    protected ClientType client;
    @XmlElement(required = true)
    protected List<ServicePaymentResponseType> serviceList;
    protected double paymentAdviceAmount;
    @XmlElementRef(name = "remarks", type = JAXBElement.class, required = false)
    protected JAXBElement<String> remarks;
    @XmlSchemaType(name = "dateTime")
    protected XMLGregorianCalendar expiryDate;
    @XmlElement(required = true)
    protected String paymentAdviceStatus;
    protected boolean isSettled;

    /**
     * Gets the value of the client property.
     * 
     * @return
     *     possible object is
     *     {@link ClientType }
     *     
     */
    public ClientType getClient() {
        return client;
    }

    /**
     * Sets the value of the client property.
     * 
     * @param value
     *     allowed object is
     *     {@link ClientType }
     *     
     */
    public void setClient(ClientType value) {
        this.client = value;
    }

    /**
     * Gets the value of the serviceList property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the serviceList property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getServiceList().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link ServicePaymentResponseType }
     * 
     * 
     */
    public List<ServicePaymentResponseType> getServiceList() {
        if (serviceList == null) {
            serviceList = new ArrayList<ServicePaymentResponseType>();
        }
        return this.serviceList;
    }

    /**
     * Gets the value of the paymentAdviceAmount property.
     * 
     */
    public double getPaymentAdviceAmount() {
        return paymentAdviceAmount;
    }

    /**
     * Sets the value of the paymentAdviceAmount property.
     * 
     */
    public void setPaymentAdviceAmount(double value) {
        this.paymentAdviceAmount = value;
    }

    /**
     * Gets the value of the remarks property.
     * 
     * @return
     *     possible object is
     *     {@link JAXBElement }{@code <}{@link String }{@code >}
     *     
     */
    public JAXBElement<String> getRemarks() {
        return remarks;
    }

    /**
     * Sets the value of the remarks property.
     * 
     * @param value
     *     allowed object is
     *     {@link JAXBElement }{@code <}{@link String }{@code >}
     *     
     */
    public void setRemarks(JAXBElement<String> value) {
        this.remarks = value;
    }

    /**
     * Gets the value of the expiryDate property.
     * 
     * @return
     *     possible object is
     *     {@link XMLGregorianCalendar }
     *     
     */
    public XMLGregorianCalendar getExpiryDate() {
        return expiryDate;
    }

    /**
     * Sets the value of the expiryDate property.
     * 
     * @param value
     *     allowed object is
     *     {@link XMLGregorianCalendar }
     *     
     */
    public void setExpiryDate(XMLGregorianCalendar value) {
        this.expiryDate = value;
    }

    /**
     * Gets the value of the paymentAdviceStatus property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getPaymentAdviceStatus() {
        return paymentAdviceStatus;
    }

    /**
     * Sets the value of the paymentAdviceStatus property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setPaymentAdviceStatus(String value) {
        this.paymentAdviceStatus = value;
    }

    /**
     * Gets the value of the isSettled property.
     * 
     */
    public boolean isIsSettled() {
        return isSettled;
    }

    /**
     * Sets the value of the isSettled property.
     * 
     */
    public void setIsSettled(boolean value) {
        this.isSettled = value;
    }

}
